package com.wlr.study.leetcode;

/**
 * @author lrwang
 * @version 1.0
 * @date 2021/6/30 23:02
 * 斐波那契数列递归练习等
 */
public class Fibonacci {
    /**
     * 斐波那契数列
     */
    public static int fibonacci(int n) {
        if (n <= 2) {
            return 1;
        }
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

    /**
     * 斐波那契数列
     *
     * @param n 参数
     * @return 情况
     */
    public static int fibonacci2(int n) {
        int a = 0, b = 0, c = 1;
        if (n < 2) {
            return n;
        }
        for (int i = 2; i <= n; i++) {
            a = b;
            b = c;
            c = a + b;
        }
        return c;
    }

    /**
     * 一只青蛙一次可以跳上1级台阶，也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
     *
     * @param n 台阶
     * @return 跳法
     */
    public static int xQingwa(int n) {
        if (n <= 2) {
            return n;
        }
        return xQingwa(n - 1) + xQingwa(n - 2);
    }

    public static int InversePairs(int[] array) {
        int result = 0;
        for (int i = 0; i < array.length; i++) {
            for (int j = i; j < array.length; j++) {
                if (array[i] > array[j]) {
                    result++;
                }
            }
        }
        return result % 1000000007;
    }

    public static void main(String[] args) {
        System.out.println(fibonacci(10));
        System.out.println(xQingwa(10));
        System.out.println(1 % 2);
        System.out.println(Fibonacci.InversePairs(new int[]{1, 2, 3, 4, 5, 6, 7, 0}));
    }
}
